
/**
 * Write a description of class Manager here.
 * 
 * @author (your name) 
 * @version (a version number or a date)
 */
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Manager implements Serializable
{
    private String naam;
    private String wachtwoord;
    private Supermarkt supermarkt;
   
    public Manager(String naam, String wachtwoord, String supernaam, double geld){
        this.naam = naam;
        this.wachtwoord = wachtwoord;
        supermarkt = new Supermarkt(supernaam, geld);
    }   
    
    //Voeg een klant toe
    public void addKlant(String naam){
        supermarkt.addKlant(naam, supermarkt);
    }
    
    //Voeg een compleet nieuw product toe
    public void addNieuwProduct(String naam, double inkoopPrijs, double verkoopPrijs, int voorraadMagazijn, Datum houdbaarheidsDatum, String afdelingNaam){
        Afdeling afdeling = supermarkt.getAfdeling(afdelingNaam);
        supermarkt.addNieuwProduct(naam, inkoopPrijs, verkoopPrijs, voorraadMagazijn, houdbaarheidsDatum, afdeling);
        supermarkt.minGeld( inkoopPrijs*voorraadMagazijn );
    }
    
    public void verwijderProduct(String naam){
        supermarkt.verwijderProduct(naam);
    }
    
    //Voeg een werknemer toe
    public void addWerknemer(String naam, double loon){
        supermarkt.addWerknemer(naam, loon);
    }
    
    public void bestelProduct(Product product, int besteldeAantal, Datum datum ){
        double prijs = supermarkt.getInkoopPrijs(product);
        supermarkt.bestelProduct(product, besteldeAantal, datum);
        supermarkt.minGeld( prijs * besteldeAantal );
//         Bon bon = supermarkt.addAdminBon();
//         bon.addBonregel(besteldeAantal, product, prijs);
        System.out.printf("%d, %s, %.2f%n", besteldeAantal, product.getNaam(), prijs);
        System.out.printf("Totaal bedrag: %.2f%n", prijs * besteldeAantal);
    }
    
    //Vraag naam op van manager 
    public String getNaam(){
        return naam;
    }
    
    //Vraagt de winst van supermarkt op
    public double getWinst(){
        return supermarkt.getWinst();
    }
    
    //Vraagt de totale kosten op van de supermarkt
    public double getKosten(){
        return supermarkt.getKosten();
    }
    
    //Vraagt omzet op
    public double getOmzet(){
        return supermarkt.getOmzet();
    }    
    
    //Haalt de balans op 
    public double getGeld(){
        return supermarkt.getGeld();
    }
    
    //Haalt supermarkt op
    public Supermarkt getSupermarkt(){
        return supermarkt;
    }
    
    //verkrijg de vaste lasten\\
    public double getVasteLasten(){
        return supermarkt.getVasteLasten();
    }
    
    //Haalt wachtwoord op van manager
    public String getWachtwoord(){
        return wachtwoord;
    }
    
    //Leg product in schap
    public void legProductInSchap(String naam, int aantal){
        supermarkt.legProductInSchap(naam,aantal);
    }
    
    //Stel korting in 2 voor prijs van 1 voor bepaald product
    public void setKortingTweeVoorEen(String naam){
        supermarkt.setKortingTweeVoorEen(naam);
    }
    
    //Stel ..% Korting in
    public void setKorting(String naam, double korting){
        supermarkt.setKorting(naam, korting);
    }
    
    public void kortingWeg(Product product, double prijs1){
        supermarkt.kortingWeg(product, prijs1);
    }
    
    //Verander de verkoopprijs van een product
    public void setVerkoopPrijsProduct( String naam, double prijs ){
        supermarkt.setVerkoopPrijsProduct( naam, prijs );
    }
    
    //Verander de inkoopprijs van een product
    public void setInkoopPrijsProduct( String naam, double prijs ){
        supermarkt.setInkoopPrijsProduct( naam, prijs );
    }
    
    //set de vaste lasten\\
    public void setVasteLasten(double bedrag){
        supermarkt.setVasteLasten(bedrag);
    }
    
    //Vraag gegevens van alle klanten op
    public void vraagGegevensKlanten(){
        supermarkt.vraagGegevensKlanten();
    }
    
    public void overDatum(){
        supermarkt.overDatum();
    }
    
    //zie supermarkt\\
    public void vasteLastenSysteem(){
        supermarkt.vasteLastenSysteem();
    }
    
    //Vraag gegevens van een bepaalde klant op
    public void vraagGegevensKlant(String naam){
        TuiHelper.clear();
        supermarkt.vraagGegevensKlant(naam);
    }
    
    //Vraag een bepaald product uit de winkel op    
    public void vraagProductOpWinkel(String naam){
        if(supermarkt.vraagProductOpWinkel(naam) != null){
            System.out.println(supermarkt.vraagProductOpWinkel(naam).toStringManager() );
        }
        else{
            System.out.println("Product bestaat niet");
        }
    }
    
    //Bekijk de verkoopgegevens over een periode door 2 datums ingegeven
    public void verkoopGegevensPerPeriode(Datum begindatum, Datum einddatum){
        supermarkt.verkoopGegevensPerPeriode(begindatum, einddatum);
    }
    
    public void adminBonnenPerPeriode(Datum begindatum, Datum einddatum){
        supermarkt.adminBonnenPerPeriode(begindatum, einddatum);
    }
    
    public void productVerkoopStatistieken(Datum begindatum, Datum einddatum){
        supermarkt.productVerkoopStatistieken(begindatum, einddatum);
    }
    
    //Zoek een klant
    public Klant zoekKlant(String naam){
        Klant gezochtKlant = supermarkt.zoekKlant( naam);
        return gezochtKlant;
    }
    
    // Product opzoeken in de winkel op naam
    public Product zoekProduct(String naam){
        return supermarkt.zoekProduct(naam);
    }
    
    public void addAfdeling(String naam){
        supermarkt.addAfdeling(naam);
    }
    
    public void verwijderAfdeling(String naam){
        supermarkt.verwijderAfdeling(naam);
    }
    
    public void verwijderVoorraad(){
        supermarkt.verwijderVoorraad();
    }
    
    public void verkoopGegevensWegschrijven(){
        supermarkt.verkoopGegevensWegschrijven();
    }
}
